package com.augurit.gzcgwsp.excelimportexport.service.impl;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.dozer.DozerBeanMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.augurit.gzcgwsp.excelimportexport.dao.YwRqQyjyxkRqssdjbDao;
import com.augurit.gzcgwsp.excelimportexport.entity.YwRqQyjyxkRqssdjb;
import com.augurit.gzcgwsp.excelimportexport.service.IYwRqQyjyxkRqssdjbService;
import com.augurit.gzcgwsp.rqqyjyxk.entity.YwRqQyjyxkFinalRqssdjb;
import com.augurit.gzcgwsp.rqqyjyxk.service.IYwRqQyjyxkFinalRqssdjbService;

/**
 * 广州市燃气经营许可证许可审批------五、燃气设施登记表
 * @author xgw
 *
 */
@Service
@Transactional
public class YwRqQyjyxkRqssdjbServiceImpl implements IYwRqQyjyxkRqssdjbService {

	@Autowired
	YwRqQyjyxkRqssdjbDao ywRqQyjyxkRqssdjbDao;
	@Autowired
	IYwRqQyjyxkFinalRqssdjbService rqssdjService;
	/**
	 * 保存 燃气设施登记表
	 * @param YwRqQyjyxkRqqxsbylb
	 */
	public void save(YwRqQyjyxkRqssdjb ywRqQyjyxkRqssdjb) {
		ywRqQyjyxkRqssdjbDao.save(ywRqQyjyxkRqssdjb);
	}
	
	/**
	 * 解析 燃气设施登记表
	 * @param hssfsheet
	 * @param acceptNo
	 * @param qyid
	 * @return
	 */
	public YwRqQyjyxkRqssdjb parseRqqxsbylb(HSSFSheet hssfsheet,String acceptNo, Long qyid, String username) {
		String rgmqsccSl = null;//人工煤气生产厂
		String cpzSl = null;//储配站
		String mzSl = null;//门站
		String qhzSl = null;//气化站
		String hqzSl = null;//混气站
		String jqzSl = null;//加气站
		String gzzSl = null;//灌装站
		String gyzSl = null;//供应站
		String tyzSl = null;//调压站
		String gdqyydSl = null;//管道气营业点
		
		String hql = "from YwRqQyjyxkRqssdjb t where t.qyid = "+qyid+"";
		List<YwRqQyjyxkRqssdjb> list=ywRqQyjyxkRqssdjbDao.find(hql);
		for(int i=0;i<list.size();i++)
		{
			ywRqQyjyxkRqssdjbDao.delete(list.get(i));
		}
		
		YwRqQyjyxkRqssdjb ywRqQyjyxkRqssdjb = new YwRqQyjyxkRqssdjb();
 		try {
 			
 			HSSFRow hssfrow = hssfsheet.getRow(0);// 第一行
// 				System.out.println("总行数++++++++"
// 						+ hssfsheet.getPhysicalNumberOfRows());
 				// 遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
 				for (int j = 3; j < hssfsheet.getPhysicalNumberOfRows(); j++) {
 					hssfrow = hssfsheet.getRow(j);
 					// 判断是否还存在需要导入的数据
 					if (hssfrow == null) {
 						//System.out.println("这里已没有数据，在第" + i + "列,第" + j + "行");
 						break;
 					}
 					if (j == 3) {//第2行
 						if (hssfrow.getCell((short) 2) == null) {
 							rgmqsccSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							rgmqsccSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							rgmqsccSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 4) {//第3行
 						if (hssfrow.getCell((short) 2) == null) {
 							cpzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							cpzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							cpzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 5) {//第4行
 						if (hssfrow.getCell((short) 2) == null) {
 							mzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							mzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							mzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 6) {//第5行
 						if (hssfrow.getCell((short) 2) == null) {
 							qhzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							qhzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							qhzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 7) {//第6行
 						if (hssfrow.getCell((short) 2) == null) {
 							hqzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							hqzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							hqzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 8) {//第7行
 						if (hssfrow.getCell((short) 2) == null) {
 							jqzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							jqzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							jqzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 9) {//第8行
 						if (hssfrow.getCell((short) 2) == null) {
 							gzzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							gzzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							gzzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 10) {//第9行
 						if (hssfrow.getCell((short) 2) == null) {
 							gyzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							gyzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							gyzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 11) {//第10行
 						if (hssfrow.getCell((short) 2) == null) {
 							tyzSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							tyzSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							tyzSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					if (j == 12) {//第11行
 						if (hssfrow.getCell((short) 2) == null) {
 							gdqyydSl = "";
 						} else if (hssfrow.getCell((short) 2).getCellType() == 0) {
 							gdqyydSl = new Double(hssfrow.getCell((short) 2).getNumericCellValue()).toString();
 						} else {// 如果EXCEL表格中的数据类型为字符串型
 							gdqyydSl = hssfrow.getCell((short) 2).getStringCellValue().trim();
 						}
 					}
 					
 				}
 				ywRqQyjyxkRqssdjb.setQyid(qyid);
 				ywRqQyjyxkRqssdjb.setAcceptNo(acceptNo);
 				ywRqQyjyxkRqssdjb.setUploadDate(new Date());
 				ywRqQyjyxkRqssdjb.setUserName(username);

 				ywRqQyjyxkRqssdjb.setRgmqsccSl(rgmqsccSl);
 				ywRqQyjyxkRqssdjb.setCpzSl(cpzSl);
 				ywRqQyjyxkRqssdjb.setMzSl(mzSl);
 				ywRqQyjyxkRqssdjb.setQhzSl(qhzSl);
 				ywRqQyjyxkRqssdjb.setHqzSl(hqzSl);
 				ywRqQyjyxkRqssdjb.setJqzSl(jqzSl);
 				ywRqQyjyxkRqssdjb.setGzzSl(gzzSl);
 				ywRqQyjyxkRqssdjb.setGyzSl(gyzSl);
 				ywRqQyjyxkRqssdjb.setTyzSl(tyzSl);
 				ywRqQyjyxkRqssdjb.setGdqyydSl(gdqyydSl);
 				this.save(ywRqQyjyxkRqssdjb);
 		}catch(Exception e){
 			e.printStackTrace();
 		}
		return null;
	}

	/**
     * 导出 基本信息表
     * @return
     */
    public HSSFSheet expRqqxsbylb(HSSFSheet hssfsheet,String acceptNo, Long qyid, String username,HSSFCellStyle cs,String exptype){
       if("qyxx".equals(exptype)){
    	   YwRqQyjyxkFinalRqssdjb entity=null;
    	  List<YwRqQyjyxkFinalRqssdjb>  entitys =  rqssdjService.getInfosByQyid(qyid);
    	   if(entitys!=null && entitys.size()>0){
    		   entity=entitys.get(0);
    	   }
           if(entity!=null){
              HSSFRow hssfrow = hssfsheet.getRow(0);// 第一行
              // 遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
              for (int j = 3; j < hssfsheet.getPhysicalNumberOfRows(); j++) {
                  hssfrow = hssfsheet.getRow(j);
                  // 判断是否还存在需要导入的数据
                  if (hssfrow == null) {
                      break;
                  }
                  if (j == 3) {//第2行
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getRgmqsccSl()==null||entity.getRgmqsccSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      	 cell1.setCellValue(entity.getRgmqsccSl());   //设置单元格内容  
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j == 4){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getCpzSl()==null||entity.getCpzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                        cell1.setCellValue(entity.getCpzSl());   //设置单元格内容  
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j == 5){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                     if(entity.getMzSl()==null||entity.getMzSl()=="")
                     {
                  	   cell1.setCellValue("");
                     }
                     else
                     {
                      cell1.setCellValue(entity.getMzSl());   //设置单元格内容  
                     }
                     cell1.setCellStyle(cs); 
                  }
                  if(j == 6){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getQhzSl()==null||entity.getQhzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      	 cell1.setCellValue(entity.getQhzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==7){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getHqzSl()==null||entity.getHqzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      cell1.setCellValue(entity.getHqzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==8){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getJqzSl()==null||entity.getJqzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      cell1.setCellValue(entity.getJqzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==9){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getGzzSl()==null||entity.getGzzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      	 cell1.setCellValue(entity.getGzzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==10){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getGyzSl()==null||entity.getGyzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                      	 cell1.setCellValue(entity.getGyzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==11){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                      if(entity.getTyzSl()==null||entity.getTyzSl()=="")
                      {
                      	cell1.setCellValue("");
                      }
                      else
                      {
                          cell1.setCellValue(entity.getTyzSl());   //设置单元格内容 
                      }
                      cell1.setCellStyle(cs); 
                  }
                  if(j ==12){
                      HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                     if(entity.getGdqyydSl()==null||entity.getGdqyydSl()=="")
                     {
                  	   cell1.setCellValue("");
                     }
                     else
                     {
                      cell1.setCellValue(entity.getGdqyydSl());   //设置单元格内容 
                     }
                     cell1.setCellStyle(cs); 
                  }
              }
             }
          
    	   
       }else{
       	YwRqQyjyxkRqssdjb entity = this.getByQyId(qyid);
           if(entity!=null)
           {
           HSSFRow hssfrow = hssfsheet.getRow(0);// 第一行
           // 遍历该行所有的行,j表示行数 getPhysicalNumberOfRows行的总数
           for (int j = 3; j < hssfsheet.getPhysicalNumberOfRows(); j++) {
               hssfrow = hssfsheet.getRow(j);
               // 判断是否还存在需要导入的数据
               if (hssfrow == null) {
                   break;
               }
               if (j == 3) {//第2行
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getRgmqsccSl()==null||entity.getRgmqsccSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   	 cell1.setCellValue(entity.getRgmqsccSl());   //设置单元格内容  
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j == 4){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getCpzSl()==null||entity.getCpzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                     cell1.setCellValue(entity.getCpzSl());   //设置单元格内容  
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j == 5){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                  if(entity.getMzSl()==null||entity.getMzSl()=="")
                  {
               	   cell1.setCellValue("");
                  }
                  else
                  {
                   cell1.setCellValue(entity.getMzSl());   //设置单元格内容  
                  }
                  cell1.setCellStyle(cs); 
               }
               if(j == 6){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getQhzSl()==null||entity.getQhzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   	 cell1.setCellValue(entity.getQhzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==7){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getHqzSl()==null||entity.getHqzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   cell1.setCellValue(entity.getHqzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==8){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getJqzSl()==null||entity.getJqzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   cell1.setCellValue(entity.getJqzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==9){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getGzzSl()==null||entity.getGzzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   	 cell1.setCellValue(entity.getGzzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==10){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getGyzSl()==null||entity.getGyzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                   	 cell1.setCellValue(entity.getGyzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==11){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                   if(entity.getTyzSl()==null||entity.getTyzSl()=="")
                   {
                   	cell1.setCellValue("");
                   }
                   else
                   {
                       cell1.setCellValue(entity.getTyzSl());   //设置单元格内容 
                   }
                   cell1.setCellStyle(cs); 
               }
               if(j ==12){
                   HSSFCell cell1=hssfrow.createCell((short)2);   //创建一个单元格  HSSFCell类表示单元格  // 四个参数分别是：起始行，起始列，结束行，结束列 
                  if(entity.getGdqyydSl()==null||entity.getGdqyydSl()=="")
                  {
               	   cell1.setCellValue("");
                  }
                  else
                  {
                   cell1.setCellValue(entity.getGdqyydSl());   //设置单元格内容 
                  }
                  cell1.setCellStyle(cs); 
               }
           }
          }
       }
        return hssfsheet;
    }

    /**
     * 根据id获取基本信息
     * @param id
     * @return
     */
    private YwRqQyjyxkRqssdjb getByQyId(Long qyid){
        String hql = "from YwRqQyjyxkRqssdjb t where t.qyid = :qyid";
        Map values = new HashMap();
        values.put("qyid", qyid);
        return (YwRqQyjyxkRqssdjb)ywRqQyjyxkRqssdjbDao.findUnique(hql, values);
    }

    public Map importFinalQyData(String acceptNo, Long qyid) {
        List<YwRqQyjyxkRqssdjb>  list=getDatas(acceptNo,qyid);
        if(list!=null && list.size()>0){
            List<YwRqQyjyxkFinalRqssdjb> datas= getFinalDatas(qyid);
            if(datas!=null && datas.size()>0){
                YwRqQyjyxkFinalRqssdjb finalentity=datas.get(0);
                 Long id=finalentity.getId();
                 finalentity = new DozerBeanMapper().map(list.get(0), YwRqQyjyxkFinalRqssdjb.class);
                 finalentity.setId(id);
                this.rqssdjService.save(finalentity);
            }else{
                YwRqQyjyxkFinalRqssdjb entity = new DozerBeanMapper().map(list.get(0), YwRqQyjyxkFinalRqssdjb.class);
                entity.setQyid(qyid);
                 entity.setId(null);
                this.rqssdjService.save(entity);
            }
        }
      
       return null;
    }

    private List<YwRqQyjyxkFinalRqssdjb> getFinalDatas(Long qyid){
        String sql=" from "+YwRqQyjyxkFinalRqssdjb.class.getName()+" where qyid='"+qyid+"'";
        return this.ywRqQyjyxkRqssdjbDao.find(sql);
        
    }
    private List<YwRqQyjyxkRqssdjb> getDatas(String acceptNo, Long qyid){
        String sql=" from "+YwRqQyjyxkRqssdjb.class.getName()+" where qyid='"+qyid+"' and acceptNo='"+acceptNo+"'";
        return this.ywRqQyjyxkRqssdjbDao.find(sql);
    }
}
